<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>01_Lodash-基本使用</title>
</head>
<body>

  <script src="./libs/lodash-4.17.21.js"></script>

  <script>
    console.log("%O", _);
    console.log(_.VERSION);
    console.log(_.join(["a", "b", "c"], "-"));

    // 1. 常用方法
    // 1.1 chunk
    // 将数组拆分成多个 size 长度的块，每个块组成小数组，整体组成大数组
    console.log(_.chunk(["a", "b", "c", "d"], 2));
    // 1.2 compact
    // 创建一个新数组，包含原数组中所有的非假值元素。例如 false, null, 0, "", undefined, 和 NaN 都是被认为是“假值”。    console.log(_.compact([0, 1, false, 2, "", 3]));
    // 1.3 concat
    // 创建一个新数组，将 array 与任何数组 或 值连接在一起
    console.log(_.concat([1], 2, [3, 4]));
    // 1.4 difference

    // 2. number方法
    // 2.1 random
    // 生成一个大于等于 min、小于 max 的随机数
    console.log(_.random(0, 5));
    // 2.2 round
    // 四舍五入
    console.log(_.round(4.2, 0));
    // 2.3 sum
    // 求和
    console.log(_.sum([1, 2, 3, 4]));

    // 3. object方法
    // 3.1 assign
    // 将源对象的所有可枚举属性复制到目标对象中，然后返回目标对象
    var obj = { a: 1 };
    _.assign(obj, { b: 2 });
    console.log(obj);
    // 3.2 keys
    // 获取对象的所有key
    console.log(_.keys({ a: 1, b: 2 }));
    // 3.3 values
    // 获取对象的所有value
    console.log(_.values({ a: 1, b: 2 }));

    // 4. array方法
    // 4.1 find
    // 查找数组中符合条件的第一个元素，并返回该元素
    var users = [
      { 'user': 'barney', 'age': 36, 'active': true },
      { 'user': 'fred',   'age': 40, 'active': false }
    ];
    console.log(_.find(users, function(o) { return o.age < 40; }));
    // 4.2 filter
    // 查找数组中符合条件的所有元素，并返回该元素
    console.log(_.filter(users, function(o) { return !o.active; }));
    // 4.3 map
    // 对数组的每个元素进行处理，返回新的数组
    console.log(_.map([1, 2, 3], function(n) {
      return n * 3;
    }));
    // 4.4 reduce
    // 对数组的每个元素进行处理，返回处理后的值
    console.log(_.reduce([1, 2, 3], function(sum, n) {
      return sum + n;
    }, 0));
    // 4.5 includes
    // 判断数组中是否包含某个元素
    console.log(_.includes([1, 2, 3], 2)); // => true

    // 5. string方法
    // 5.1 camelCase
    // 将字符串转换为驼峰命名法
    console.log(_.camelCase('Foo Bar')); // => 'fooBar'
    // 5.2 upperFirst
    // 将字符串的第一个字符转换为大写
    console.log(_.upperFirst('fred')); // => 'Fred'
    // 5.3 lowerFirst
    // 将字符串的第一个字符转换为小写
    console.log(_.lowerFirst('Fred')); // => 'fred'

    
  </script>
  
</body>
</html>